<?php
class DB
{
	private static $instance;
	public static $estaConectado;
	private $idInserido;
	private $numLinhas;
	
	/**
	 * Singleton - retorna o instancia da classe que est� na mem�ria, caso n�o exista uma em mem�ria � criada uma instancia.
	 *
	 * @return DB
	 */
    public static function getInstance()
    {
        if(empty(self::$instance))
        {
            self::$instance = new self;
        }
        return self::$instance;
    }
	
	/**
	 * Enter description here...
	 *
	 * @return Boolean sucesso na conex�o
	 */
	function abrirConexao()
	{
		if($this->getEstaConectado())
			return false;
		
		$this->setEstaConectado(mysql_connect(DB_HOST, DB_USER, DB_PASSWORD));

		if(mysql_select_db(DB_NAME, $this->estaConectado) <= 0)
			return false;
			
		return true;
	}
	
	/**
	 * Efetua a verifica��o se est� conectado
	 * 
	 * @return Boolean true para conex�o aberta
	 */
	function getEstaConectado()
	{
		return $this->estaConectado;
	}
	
	/**
	 * Seta o valor que indica conex�o com o banco de dados
	 * 
	 * @return void
	 */
	function setEstaConectado($estaConectado)
	{
		$this->estaConectado = $estaConectado;
	}
	
	/**
	 * Processa a query sql fornecida, retornando um Boolean para insert e update. Ou um Array para um select.
	 * 
	 * @param String query sql
	 * @return int para insert ou update e Array para select
	 */
	function execSqlQuery($query='')
	{
		if($query == '')
		{
			return false;
		}
			
		if(!$this->getEstaConectado())
		{
			return false;
		}
		
		$result = @mysql_query($query, $this->getEstaConectado());

		if(is_bool($result))
		{
			$this->idInserido = @mysql_insert_id($this->getEstaConectado());
			return @mysql_affected_rows($this->getEstaConectado());
		}
		
		$this->numLinhas = @mysql_num_rows($result);
		
		if($this->numLinhas > 0)
		{
			for($i=0; $i < $this->numLinhas; $i++)
				$row[$i] = mysql_fetch_assoc($result);
			
			return $row;
		}
		
		return true;
	}
	
	/**
	 * Fechar conex�o com o banco de dados
	 *
	 * @return void
	 */
	function fecharConexao()
	{
		if($this->estaConectado)
		{
			$this->setEstaConectado(false);
			@mysql_close($this->getEstaConectado());
		}
	}
}
?>